
//todo
// 假设有k个人质和k个绑匪围成一圈。人质的编号从1到k，绑匪的编号从k+1到2k。
// 从编号1开始，每次从其中选出第m个人(隔m-1选出一人)出列。
// 希望求出m的最小值，使得最先出列的k个人都是绑匪，即都是编号从k+1到2k的人。
#include "iostream"
#include "vector"
#include "unordered_map"
#include "algorithm"

int main() {

    int m;
    while (std::cin >> m) {
        std::vector<int> buf(m);
        for(int i=0;i<m;i++){
            std::cin>>buf[i];
        }
        std::sort(buf.begin(),buf.end());

        int last=buf[0];
        int delcnt=0;
        for(int i=1;i<m;i++){
            if(buf[i]==last){
                delcnt++;
            }
            buf[i-delcnt]=buf[i];
            last=buf[i];
        }
//        buf.resize(buf.size()-delcnt);
        for(int i=0;i<buf.size()-delcnt;i++){
            if(i!=0){
                printf(" ");
            }
            printf("%d",buf[i]);
        }
        printf("\n");
    }
//    while(1){}
    return 0;
}